//
//  ILLinkStateModel.h
//  AFNetworking
//
//  Created by Roffa Zhou on 2022/6/7.
//

#import <Foundation/Foundation.h>
#if __has_include(<IMILabSDK_BindCommon/IMILabSDK_BindCommon.h>)
#import <IMILabSDK_BindCommon/ILBindDeviceModel.h>

#else
#import "ILBindDeviceModel.h"

#endif

typedef NS_ENUM(NSUInteger, ILLinkState) {
    /// 初始化状态，此时未进入绑定流程
    ILLinkState_Null = -9999,
    /// 开始绑定
    ILLinkState_Begin = 3000,
    ///处理待绑定相关信息中
    ///获取网关信息 1
    ///激活网关 2
    ///获取产品信息 3
    ILLinkState_PreInfo_Process = 3100,
    /// 连接前检查确认中
    ILLinkState_Check = 3200,
    /// 进入用户引导页，此时内部已发起配网请求。
    /// 存在subcode:
    /// 1, <一键配网对应页面流转：直接进入输入密码页
    /// 2, <手机热点对应页面流转：用户引导开启热点页-》输入密码页
    /// 3, 设备热点页面流转: e.g  引导切换热点页-》输入密码页
    /// 4, 二维码配网页面流程
    /// 5, 音响配网页面流程
    /// 6  音响配网页面流程
    ILLinkState_Guide = 3300,
    /// 发现设备中
    ILLinkState_Discovery = 3400,
    /// 连接中
    ILLinkState_Connecting = 3500,
    /// 切换到设备热点相关状态
    /// 存在subcode：
    /// 1=应该切换到设备热点；此时UI层应该完成切换手机wifi为设备热点
    /// 2=已经切换到设备热点
    /// 3=已发送数据
    /// 4=应该切换回路由器
    /// 5=已经切换回路由器
    ILLinkState_Hotspot_Switch = 3600,
    /// 认证中(获取token)
    ILLinkState_Verifying = 3700,
    /// 发送数据中
    ILLinkState_SendData = 3800,
    /// 配置设备
    /// 存在subcode:
    /// 1=获取homeid中
    /// 2=绑定设备中
    /// 3=检查设备是否在线中
    /// 4=激活设备中(invoke)
    /// 5=配置完成，绑定结束
    ILLinkState_Cfg = 3900,
};

NS_ASSUME_NONNULL_BEGIN

@interface ILLinkStateModel : NSObject

/// 当前绑定类型
@property(nonatomic)ILLinkType linkType;

/// 绑定一级状态码
@property(nonatomic)ILLinkState mode;

/// 绑定二级子码。 当不存在子码，将返回0
@property(nonatomic)NSInteger subCode;

/// 状态信息
@property(nonatomic, copy)NSString *message;

/// 更新
/// @param mode <#mode description#>
/// @param subCode <#subCode description#>
- (void)updateBindMode:(ILLinkState)mode subCode:(NSInteger)subCode;

@end

NS_ASSUME_NONNULL_END
